/**
 * 请勿将俱乐部专享资源复制给其他人，保护知识产权即是保护我们所在的行业，进而保护我们自己的利益
 * 即便是公司的同事，也请尊重 JFinal 作者的努力与付出，不要复制给同事
 * 
 * 如果你尚未加入俱乐部，请立即删除该色彩义，或者现在加入俱乐部：http://jfinal.com/club
 * 
 * 俱乐部将提供 jfinal-club 色彩义文档与设计资源、专用 QQ 群，以及作者在俱乐部定期的分享与答疑，
 * 价值远比仅仅拥有 jfinal club 色彩义源代码要大得多
 * 
 * JFinal 俱乐部是五年以来首次寻求外部资源的尝试，以便于有资源创建更加
 * 高品质的产品与服务，为大家带来更大的价值，所以请大家多多支持，不要将
 * 首次的尝试扼杀在了摇篮之中
 */

package com.jfinal.club.my.wordcolor;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.club.common.model.Wordcolor;
import com.jfinal.club.index.IndexService;
import com.jfinal.club.my.favorite.FavoriteService;
import com.jfinal.club.my.like.LikeService;
import com.jfinal.club.my.newsfeed.NewsFeedService;
import com.jfinal.club.my.newsfeed.ReferMeKit;
import com.jfinal.kit.Ret;

import java.util.Date;
import java.util.List;

/**
 * 我的色彩义
 */
public class MyWordcolorService {

	public static final MyWordcolorService me = new MyWordcolorService();
	private Wordcolor dao = new Wordcolor().dao();

	public List<Wordcolor> findAll(int accountId) {
		return dao.find("select * from wordcolor where accountId=? order by createAt desc", accountId);
	}

	public Wordcolor findById(int accountId, int wordcolorId) {
		return dao.findFirst("select * from wordcolor where accountId=? and id=?", accountId, wordcolorId);
	}

	public Page<Wordcolor> paginate(int accountId, int pageNumber, int pageSize) {
		return dao.paginate(pageNumber, pageSize, "select * ", "from wordcolor where accountId=? order by createAt", accountId);
	}

	/**
	 * 用于创建色彩义，判断当前色彩义名称是否已经存在
	 */
	/*public boolean isWordcolorNameExists(String wordcolorName) {
		wordcolorName = wordcolorName.toLowerCase().trim();
		return Db.queryInt("select id from wordcolor where lower(name) = ? limit 1", wordcolorName) != null;
	}*/

	/**
	 * 用于更新色彩义，判断当前色彩义名称是否已经存在
	 * 排除当前色彩义 id：如果色彩义名称没有被修改，那么色彩义名称必定已经存在
	 */
	public boolean isWordcolorNameExists(int exceptWordcolorId, String wordcolorName) {
		wordcolorName = wordcolorName.toLowerCase().trim();
		return Db.queryInt("select id from wordcolor where id != ?  and lower(name) = ? limit 1", exceptWordcolorId, wordcolorName) != null;
	}

	public boolean isWordcolorIdExists(Integer wordcolorId) {
		return Db.queryInt("select id from wordcolor where id = ? limit 1", wordcolorId) != null;
	}

	public Ret save(int accountId, Wordcolor wordcolor) {
		wordcolor.setAccountId(accountId);
		wordcolor.setWordName(wordcolor.getWordName().trim());
		wordcolor.setContent(wordcolor.getContent().trim());
		wordcolor.setCreateAt(new Date());
		wordcolor.save();
		return Ret.ok("msg", "创建成功");
	}

	public void update(int accountId, Wordcolor wordcolor) {
		if (Db.queryInt("select accountId from wordcolor where id=? limit 1", wordcolor.getId()) != accountId) {
			throw new RuntimeException("个人空间只能操作属于自己的色彩义");
		}
		wordcolor.setContent(wordcolor.getContent());
		wordcolor.update();
		IndexService.me.clearCache();
	}

	/**
	 * 删除 wordcolor 之前，先删除 news_feed，NewsFeedService 会自动删除相应的 refer_me
	 * 注意：未来如果支持 wordcolor_reply 功能时，需要最先删除 wordcolor_wordcolor 相关的 news_feed、再删 wordcolor_reply，然后下面的代码
	 */
	public void delete( final int wordcolorId) {
		dao.deleteById(wordcolorId);
	}
}

